Lately I've been on a quest to build out a command line environment that will support as much of my usual computing as possible. I have used a few tools for many years now and have added some new ones to completed the suite.
The venerable tmux
Since I multitask, I have to have more than one terminal screen visible. For this I use tmux. I've used it for at least a decade to manage remote machines. The great thing about tmux is that if the connection gets severed, you can reconnect. This is critical when running upgrades on a remote machine. You can also manually disconnect a session and come back to it later. This is perfect for long running processes. I've upped my tmux game in a couple ways.
Using horizontal and vertical splits to the window can be very effective for keeping track of many activities. There are two drawbacks, at least on a laptop, as the more you split the smaller each area gets and this can be a pain. The other drawback is that if you need to end your tmux session (say for a reboot), then you have to create all those splits again. Creating multiple tmux windows give you as many canvases as you wish to split according to what fits the work each is doing. I might have a music player in one window, a remote connection in another, and some monitoring in yet another.
As for the other drawback, having to build all these windows and splits, the solution to that is tmuxp. This tool lets you write a configuration file for all these windows and splits. It will even run the commands you want in each to set you all up. As an example, right now I have the following:
5 windows - mocp - music player - news - newsboat and offpunk vertically split - sitka - emacs and tailing a log horizontally split - btop - btop running - python3 - a terminal prompt and toot vertically split
Each window is numbered so I can just hit ctrl-b and then the window number to switch.
I can also connect to my laptop remotely through ssh and if I try to start the tmuxp profile for all this, it just asks if I want to connect to it.
Frankly, it just kicks ass.
Kitty terminal
Most of the time when I'm using my laptop, I have tmux running in a terminal. I was using tilix, but it was having some keyboard shortcut conflicts so I used that opportunity to try a new terminal called kitty. It is designed to be simple and fast. It doesn't have all the tiling features that tilix had, but I'm doing all that in tmux anyway. It is blazingly fast.
fish shell
I've used the bash shell for decades. I'm not much of a shell power user so I thought I'd try a new one. fish has more advanced command completion that is very nice. The big change for me so far is that it uses functions instead of aliases. It is a little more complicated than adding a line to a file, but it is much more flexible and powerful. Lots more to learn here!
links2
A web browser is an important part of any computing these days and it certainly is a bit tougher from the command line. Nine times out of ten, I just alt tab to Librewolf and do what I need to do. If I open items from newsboat, offpunk, or toot they will open a tab in Librewolf. Links2 does have a gui mode which is a simplified web browser. It has to be able to open a gui window, so this wouldn't work when ssh'ing in from somewhere else......unless you did some X window magic. I've done that in the distant past. Kind of like an RDP session except just one window. I doubt I could do it from my work Windows machine without some serious effort.
tailscale
Tailscale lets me connect to my laptop from my phone or from my laptop at work, which is just clutch.
mosh
I remember using mosh in the past and thought it would be perfect for this tmuxp business. I could start up a session on my laptop then take it to a coffee shop or the library and my ssh sessions would stay connected seamlessly. Maybe it is just inside my LAN, but using mosh errored out when connecting to one of my remote machines. The same exact connection works fine with ssh. Something to figure out.
Do you have any cool console apps that make your life easier or more fun? Let me know below and I'll add your thoughts to this document.
Comments? Email keith@nasman.us